﻿using QMERP.Domain.Dtos;

namespace QMERP.Application.Services
{
    public interface IInventoryOrderService
    {
        /// <summary>
        /// 库存盘点单窗体
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<PageResponse<InventoryOrderResponse>> Query(PageRequest<InventoryOrderRequest> request);
        /// <summary>
        /// 获取id的库存盘点单详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<InventoryOrderResponse> Detail(long id);
        /// <summary>
        /// 库存盘点单保存
        /// </summary>
        /// <param name="request"></param>
        /// <param name="isCheck"></param>
        /// <returns></returns>
        /// <exception cref="ApiException"></exception>
        Task<InventoryOrderResponse> Save(InventoryOrderSaveRequest request, bool isCheck = false);
        /// <summary>
        /// 库存盘点单审核
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task Check(long[] ids);
        /// <summary>
        /// 库存盘点单弃审
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task UnCheck(long[] ids);
        /// <summary>
        /// 库存盘点单完成
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task Finish(long[] ids);
        /// <summary>
        /// 库存盘点单取消
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task Cancel(long[] ids);
        /// <summary>
        /// 获取库存盘点单主要信息列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        Task<List<InventoryOrderMainInfoResponse>> GetInventoryOrderMainInfos(PageRequest<InventoryOrderRequest> request);
    }
}
